import consultasBD
import utiles
from decimal import Decimal


def calcularValores():
    sql = "SELECT idventa FROM ventas WHERE iva = '0.00' AND idformaticket <> '999'"
    lista = consultasBD.ordenCrudaDict(sql)
    fila = 0
    for item in lista:
        #calculo de iva y totalsiniva
        idventa = item["idventa"]
        sql = "SELECT totalfactura FROM ventas WHERE idventa = '%s'" % (idventa)
        resultado = consultasBD.ordenCrudaDict(sql)
        totalfactura = Decimal(str(resultado[0]["totalfactura"]))
        totalsiniva = (totalfactura / Decimal("1.21")).quantize(Decimal('0.10'))
        iva = Decimal(str(resultado[0]["totalfactura"])) - totalsiniva
        
        #calculo de descuentos
        sql = "SELECT cantidad, preciolista, descuento, preciofinal FROM ventastieneproductos WHERE idticket = '%s'" % (idventa)
        resultado = consultasBD.ordenCrudaDict(sql)
        totallista = Decimal("0.00")
        totalfinal = Decimal("0.00")
        descuentolocal = False
        for detalle in resultado:
            cantidad = Decimal(str(detalle["cantidad"]))
            preciolista = Decimal(str(detalle["preciolista"]))
            descuento = Decimal(str(detalle["descuento"]))
            if descuento != Decimal("0.00"): 
                descuentolocal = True
                break
            preciofinal = Decimal(str(detalle["preciofinal"]))
            totallista += ( cantidad * preciolista )
            totalfinal += ( preciofinal )
        descuentoglobal = Decimal("0.00")
        if not descuentolocal:
            diferencia = totalfactura - totallista
            if diferencia != Decimal("0.00"):
                if totallista == Decimal("0.00"): print idventa
                aux = (Decimal("1.00") - (totalfactura / totallista))*Decimal("100.00")
                descuentoglobal = aux.quantize(Decimal("0.10"))

        sql = "UPDATE ventas SET descuento = '%s', iva = '%s', totalsiniva = '%s' WHERE idventa = '%s'" % (descuentoglobal,iva,totalsiniva,idventa)
        ultimoid = consultasBD.executa(None,sql)
        fila += 1
        
    print "Procesados %s registros" % (fila)

if __name__ == '__main__':
    calcularValores()

